<?php

require_once 'mp3\PDO.php';
require_once 'mp3/Constants.php';

class Mp3_GestionarCanco
{
	public $id;
	public $titol;
	public $artista;
	public $album;
	public $data;
	public $pais;
	public $fitxer;
	public $idUsuari;
	public $imatge = "";
	public $publica;
	protected $_error;
	
	const SQL_REGISTRAR = 'INSERT INTO cancons 
								   (`titol`, `artista`, `album`, `data`, `fitxer`, `publica`, `idUsuari`) 
						        VALUES
						           (:titol, :artista, :album, :data, :fitxer, :publica, :idUsuari)';
	const SQL_CERCAR_ID = 'SELECT * FROM cancons WHERE id = :id';
	const SQL_CERCAR_FITXER = 'SELECT * FROM cancons WHERE fitxer = :fitxer';
	const SQL_UPDATE_ESTAT = 'UPDATE cancons SET publica=:publica WHERE id=:id';	
		
	public function __construct($titol="", $artista="", $album="", $data="", $pais="", $idUsuari="", $publica="", $fitxer=""){
		$this->titol = $titol;
		$this->artista = $artista;
		$this->album = $album;
		$this->data = $data;
		$this->pais = $pais;
		$this->fitxer = $fitxer;
		$this->idUsuari = $idUsuari;
		$this->publica = $publica;
		$this->_error = '';
	}
	
	public function llegir($xml) 
	{
		foreach ( $xml AS $tag => $child )	{
			switch($tag) {
				
				case 'title':
					$this->titol=$child;
					break;
				case 'length':
					$this->tamany=$child;
					break;
				case 'artist-credit':
					$xml2 = $child->children()->children()->children();
					foreach ( $xml2 AS $tag2 => $child2 )	{
						if ($tag2 == 'name') {
							$this->artista=$child2;
						}
					}
					break;
				case 'release-list':
					$xml2=$child->children()->children();
					foreach ( $xml2 AS $tag2 => $child2 )	{
						switch($tag2) {
							case 'title':
								$this->album=$child2;
								break;
							case 'date':
								$this->data=$child2;
								break;
							case 'country':
								$this->pais=$child2;
								break;
						}
					}
					break;
			}
		}	 
	}

	
	public function ok(){
		return ($this->_error == '');
	}
	
	public function getError(){
		return $this->_error;
	}
	
	public function registrar(){
		if ( $this->fitxer != '' && $this->idUsuari != '')
		{
			//Registrar
			$dbStatement = mp3_PDO::getInstance()->prepare(Mp3_GestionarCanco::SQL_REGISTRAR);
			$ok = $dbStatement->execute(array(':titol'=>$this->titol, ':artista'=>$this->artista, ':album'=>$this->album,
								 	 ':data'=>$this->data, ':fitxer'=>$this->fitxer, ':publica'=>$this->publica, ':idUsuari'=>$this->idUsuari));
			if ($ok == false){
				$this->_error = 'Error amb la sentencia sql';	
			}
		} else if ( $this->fitxer == "" ){
			$this->_error = 'Arxiu invalid';
		} else {
			$this->_error = 'Usuari invalid';
		}
	}
	
	public function cercarPerFitxer($fitxer){
		$dbStatement = mp3_PDO::getInstance()->prepare(Mp3_GestionarCanco::SQL_CERCAR_FITXER);
		$dbStatement->execute(array(':fitxer'=>$fitxer));
		$result = $dbStatement->fetch();
		foreach ($result as $key=>$value){
			$this->$key = $value; 
		}
		$this->_error = '';
	}
	
	public function cercarPerId($id){
		$dbStatement = mp3_PDO::getInstance()->prepare(Mp3_GestionarCanco::SQL_CERCAR_ID);
		$dbStatement->execute(array(':id'=>$id));
		$result = $dbStatement->fetch();
		foreach ($result as $key=>$value){
			$this->$key = $value;
		}
		$this->_error = '';
	}
	
	public function updateEstat(){
		if ($this->id != ''){
			$dbStatement = mp3_PDO::getInstance()->prepare(Mp3_GestionarCanco::SQL_UPDATE_ESTAT);
			$dbStatement->execute(array(':publica'=>$this->publica, ':id'=>$this->id));
			$result = $dbStatement->fetch();
			$this->_error = '';
		}
	}

}